#!/usr/bin/env python3 from scapy.all import * from socket import AF_INET, SOCK_DGRAM, socket sock = socket(AF_INET, SOCK_DGRAM) sock.bind(("0.0.0.0", 1053)) while True: request, addr = sock.recvfrom(4096) DNSreq = DNS(request) query = DNSreq.qd.qname q = query.decode("ascii") print(query.decode("ascii")) ls(DNSreq) Anssec = DNSRR(rrname=DNSreq.qd.qname, type="A", rdata="1.2.3.4", ttl=86400) NSsec1 = DNSRR(rrname=query, type="NS", rdata="ns1." + q, ttl=86400) NSsec2 = DNSRR(rrname=query, type="NS", rdata="ns2." + q, ttl=86400) Addsec1 = DNSRR(rrname="ns1." + q, type="A", rdata="4.3.2.1", ttl=86400) Addsec2 = DNSRR(rrname="ns2." + q, type="A", rdata="5.4.3.2", ttl=86400) DNSpkt = DNS( id=DNSreq.id, aa=1, rd=0, qr=1, qdcount=1, ancount=1, nscount=2, arcount=2, qd=DNSreq.qd, an=Anssec, ns=NSsec1 / NSsec2, ar=Addsec1 / Addsec2, ) DNSpkt.show() sock.sendto(bytes(DNSpkt), addr)